In the past, enterprises were willing to reorganize their business processes to fit them into the relatively static structures of business software systems. More recently, however, enterprises have been more reluctant to reorganize their business processes for reasons such as the expense incurred by the reorganization. In addition, many enterprises are interested in retaining (rather than changing) business processes that have proved to be successful.
A conventional approach to providing more flexible business software systems involves the configuration of system process flows with parameters. The individual values of these parameters are set during customization of the software and respected by the processes during runtime. The configuration of process flows via parameters, however, is encumbered by a number of limitations. For example, the way in which certain parameter values influence the process flow within the system is not always clear to a user. This limitation can be partly addressed through thorough documentation and/or the expertise provided by consultants. Either of these partial solutions, however, increases the costs of the software implementation.
A second limitation of the conventional approach is that the complexity of the coding of business software increases disproportionately with the number of parameters. The increase in the complexity of the coding leads to a greater possibility of coding faults, especially for unusual parameter value combinations. This complexity and the resulting maintenance and support challenges cause functional extensions of the software to be developed more slowly or not at all.